package com.kaifamiao.reflect;

import java.lang.reflect.Array;
import java.util.Random;

public class ArraySetElement {

    public static void main(String[] args) {

        // 通过反射方式创建数组实例
        Object x = Array.newInstance( int.class, 10 ); // new int[10]
        // 获得 x 所指向实例的类型
        Class<?> c = x.getClass();
        // 借助于 Class 类中的方法判断 x 的类型是否是数组
        if( c.isArray() ) {
            // 获取数组长度
            int length = Array.getLength( x );

            show(x);

            Random rand = new Random();

            for( int i = 0 ; i < length; i++ ){
                int num = rand.nextInt(100);
                // Array.setInt( x, i, num ); // x[i] = num;
                Array.set(x, i, num); // x[i] = num ;
            }

            show(x);

            sort(x);

            show(x);

        }

    }

    public static void show( Object array ) {
        if( array == null ) {
            return;
        }
        if( !array.getClass().isArray() ) {
            return;
        }
        for( int i = 0, n = Array.getLength(array); i < n; i++ ){
            Object element = Array.get( array , i ); // Object e = x[i] ;
            System.out.print( element + ( i == n -1 ? "\n" : "\t" ) );
        }
    }

    /**
     * 为参数传入的数组排序
     * @param array
     */
    public static void sort( Object array ) {

    }

}
